package com.songshuai.sales.tool.dao.tool;

import com.songshuai.sales.tool.dto.request.sopmanage.CustomerPushReqDto;
import com.songshuai.sales.tool.dto.request.sopmanage.CustomerQueryReqDto;
import com.songshuai.sales.tool.dto.request.sopmanage.DynamicQueryReqDto;
import com.songshuai.sales.tool.dto.request.sopmanage.SopManageListReqDto;
import com.songshuai.sales.tool.dto.response.sopmanage.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @Author: 松鼠AI
 * @Date: 2019-03-11 16:40:41
 */
public interface SopManageMapper {

    /**
     *查询总条数
     * @param customerQueryReqDto
     * @return
     */
    Integer selectCount(CustomerQueryReqDto customerQueryReqDto);

    /**
     * 动态查询客户行为记录
     * @param customerQueryReqDto
     * @return
     */
    List<CustomerActResDto> selectByMsg(CustomerQueryReqDto customerQueryReqDto);

    /**
     * 根据actionUser查询sop行为数据
     * @param actionUser
     * @return
     */
    List<SopActResDto> selectByActionUser(@Param(value = "actionUser") String actionUser);

    /**
     * 查询当前客户的sop推送记录
     * @param reciveUser
     * @return
     */
    List<SopPushRecordResDto> selectSopPushRecord(@Param(value = "reciveUser")String reciveUser);

    /**
     * sop预览
     * @param sopId
     * @return
     */
    SopPreviewResDto showSopPreView(@Param(value = "sopId")String sopId);

    /**
     * 动态查询结果
     * @param dynamicQueryReqDto
     * @return
     */
    List<DynamicQueryResDto> dynamicQuery(DynamicQueryReqDto dynamicQueryReqDto);

    /**
     * 统计查询条数
     * @param dynamicQueryReqDto
     * @return
     */
    Integer selectPushRecordMapperCount(DynamicQueryReqDto dynamicQueryReqDto);

    /**
     * 动态查询sop管理展示结果
     * @param sopManageListReqDto
     * @return
     */
    List<SopManageListResDto> selectSopManageList(SopManageListReqDto sopManageListReqDto);

    /**
     * 统计查询条数
     * @param sopManageListReqDto
     * @return
     */
    Integer selectSopManageListCount(SopManageListReqDto sopManageListReqDto);

    /**
     * 查询小程序绑定状态
     * @param reciveUser
     * @return
     */
    Integer selectIsBind(@Param(value = "reciveUser") String reciveUser);

    /**
     * 批量插入推送记录
     * @param customerPushReqDto
     * @return
     */
    Integer insertPushRecord(CustomerPushReqDto customerPushReqDto);

    /**
     * 查询客户有没有绑定小程序
     * @param customerId
     * @return
     */
    Integer queryBindStatus(@Param("customerId") String customerId);

    /**
     * 判断sop有没有推送过该客户
     */
    Integer querySopPushCustomerStatus(@Param("sopId") String sopId, @Param("customerId") String customerId);

}